package xyz.dagoose.contacts;
/*
 * 二维数组的使用
 * 	  二维数组分为外层数组的元素，内层数组的元素
 * 1 二维数组的声明和初始化
 * 2 调用数组的指定位置的元素
 * 3 如何获取数组长度
 * 4 如何遍历数组
 * 5 数组元素的默认初始化
 *  + 初始化方式一 ：int[][] arr = new int[4][3];
 *   > 内层元素初始化：地址值
 *   > 外层元素初始化：与一维数组一样
 *   
 *	+ 初始化方式二 ：int[][] arr = new int[4][];
 *   > 内层元素初始化：null
 *   > 外层元素初始化：调用报错
 * 6 数组的内存解析
 * */
public class ArrayTest2 {
	public static void main(String[] args) {
		// 1 二维数组的声明和初始化
		// 静态初始化
		// 一维数组
		int[] singleArr = new int[]{1,2,3,4,5};
		// 二维数组 
		int[][] doubleArr = new int[][]{{1,2},{3,4},{5,6}};
		
		
		// 动态初始化1
		String[][] doubleArr2 = new String[3][2];
		// 动态初始化2
		String[][] doubleArr3 = new String[3][];
		
		// error syntax
//		String[][] doubleArr4 = new String[][4];
//		String[4][3] doubleArr5 = new String[][];
//		int[][] doubleArr6 = new int[4][3]{{1,23,4},{5,2},{5,6,7}};
		
		// access syntax
		int[] doubleArr4[] = new int[][]{{1,23,4},{5,2},{5,6,7}};
		int[] doubleArr5[] = {{1,23,4},{5,2},{5,6,7}};
		
		
		
		
		// 2 调用数组的指定位置的元素
		System.out.println(doubleArr[0][1]);
		System.out.println(doubleArr2[0][1]);
		
		doubleArr3[0] = new String[3];
		System.out.println(doubleArr3[0][1]);
//		System.out.println(doubleArr3[1][1]);
		
		
		
		// 3 如何获取数组长度
		System.out.println(doubleArr3.length);
		System.out.println(doubleArr2[1].length);
		System.out.println(doubleArr3[0].length);
		
		
		
		// 4 如何遍历数组
		for(int i = 0; i < doubleArr4.length;i++){
			for (int j = 0; j < doubleArr4[i].length; j++){
				System.out.print(doubleArr4[i][j]+" ");
			}
		}
		
		
		// 5 数组元素的默认初始化
		int[][] arr = new int[4][3];
		System.out.println(arr[0]);
		System.out.println(arr[0][0]);
		
	}
}
